Turbo code using iterative decoding algorithms has been shown to give a significant performance advantage over existing partial response maximum likelihood (PRML) channels. Turbo Product Code (TPC) with single parity check (TPC/SPC), which belongs to a family of turbo codes, presents the potential for less complex implementations with minimal performance losses. See for example J. Li, K. R. Narayanan, E. Kurtas, and C. N. Georghiades, “On the Performance of High-Rate TPC/SPC Codes and LDPC codes over Partial Response Channels”, IEEE Trans. Commun., Vol. 50, pages 723-734, May 2002. TPC generally utilizes “square” code words (i.e., code words having the same number of rows and columns of bits), with each code word being comprised of square code blocks. An example of a 512 byte (4,096 bit) code word is a code word having four 32 bits by 32 bits code blocks.
In telecommunications and other technical fields which utilize predetermined sized TPC code words to transmit user data, it is typical for Error Correcting Code (ECC) data, Cyclic Redundancy Check (CRC) data and/or parity check data to replace a portion of the user data in the TPC code blocks. For a predetermined sized code word or packet of data, these added ECC, CRC or parity data bits reduce the quantity of user data communicated in the packet. However, in some fields, such as in mass storage applications, the user data block typically must be of a fixed size. For example, in many mass storage applications, a user data sector must include 512 bytes of user data. Therefore, to maintain the fixed quantity of user data, insertion of ECC data, CRC data and/or parity data in the TPC is difficult.
Also, when using a TPC to encode data for transmission or storage, it is common to utilize a soft decision algorithm in conjunction with the TPC decoder to iteratively decode the data. Examples of soft decision algorithms include Soft Output Viterbi Algorithms (SOVAs) and Bahl, Cocke, Jelinek, and Raviv (BCJR) algorithms. Determining when to terminate the iterative decoding between the soft decision algorithm and the TPC decoder can be problematic. The iterative decoding can be terminated when parity check equations are satisfied. However, even with the parity check equations satisfied, error bits frequently remain in the decoded code blocks of each code word.
Embodiments of the present invention provide solutions to these and/or other problems, and offer other advantages over the prior art.